home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SGI Freeware 2002 November
/
SGI Freeware 2002 November - Disc 1.iso
/
dist
/
fw_exmh.idb
/
usr
/
freeware
/
bin
/
inc.expect.z
/
inc.expect
Wrap
Text File
|
2002-07-08
|
2KB
|
80 lines
#!/bin/sh
# \
exec /usr/freeware/bin/expect -f "$0" -- ${1+"$@"}
#
# Script to run inc and provide a password.
#
# When there is mail to incorporate, echo back only the message headers
# for the FTOC. Otherwise, send back all text, for debug logging
set timeout 60
gets stdin password
# turn off echo so that password doesn't get echoed by tty driver
set stty_init -echo
eval spawn -noecho $argv
log_user 0
# When .netrc exists, inc doesn't prompt for a password. After getting
# a password one way or another, inc prints one of
# Incorporating new mail into inbox...\r\n\r\n
# inc: no mail to incorporate
#
# For the case of mail available, we want to drain the informational
# line "Incorporating new mail" here, so it doesn't get sent back
# as output and get stuck in the FTOC window, and proceed to the while
# loop, below.
#
# If there's no mail, the informational message sent back, with exit 1,
# so the message gets put into the debug log.
#
expect {
-re "Password (.*):" {
exp_send -- $password\n
lappend incout $expect_out(buffer) $password\n
expect {
-re ".* new mail .*\n" {}
eof {
send_user $expect_out(buffer)
exit 1
}
timeout { send_user "timeout"; exit 1 }
}
}
-re ".* new mail .*\n" {}
eof {
send_user $expect_out(buffer)
exit 1
}
timeout { send_user "timeout"; exit 1 }
}
# drain any empty line
# echo back msg header for FTOC
# if exit status of inc is non-zero (e.g., 1 for no mail),
# echo back all accumulated text
while {1} {
expect {
-re "^\[ \r\n]+$" {}
-re ".*\n" {
send_user $expect_out(buffer)
}
eof {
if { [lindex [wait] 3] == 0 } {
exit 0
} else {
send_user $incout
exit 1
}
}
}
}